package string;

/**
 * 编写一个函数来查找字符串数组中的最长公共前缀。
 * 如果不存在公共前缀，返回空字符串 ""。
 * <p>
 * 示例 1：
 * 输入：strs = ["flower","flow","flight"]
 * 输出："fl"
 * <p>
 * 示例 2：
 * 输入：strs = ["dog","racecar","car"]
 * 输出：""
 * 解释：输入不存在公共前缀。
 *
 * @author Jisheng Huang
 * @version 20250618
 */
public class LongestCommonPrefix_14_2 {

    public static String longestCommonPrefix(String[] strs) {
        // 如果输入的strs为空，则返回空字符串""
        if (strs == null || strs.length == 0) {
            return "";
        }

        // 定义一个ans为strs.[0],获取到strs的第一个字符串为了一下面的循环比较
        String ans = strs[0];

        for (int i = 0; i < strs.length; ++i) {
            // 在这里定义j=0，而不是在for里面定义；是为了ans.substring(0,j)能调用j的值
            int j = 0;

            for (; j < ans.length() && j < strs[i].length(); ++j) {

                if (ans.charAt(j) != strs[i].charAt(j)) {
                    break;
                }
            }

            //获取从0到j相同的字符串
            ans = ans.substring(0, j);

            //如果ans获取的结果为空则返回空字符
            if (ans.equals(" ")) {
                return ans;
            }
        }

        return ans;
    }

    public static void main(String[] args) {
        String[] strs = {"flower", "flow", "flight"};
        System.out.println(longestCommonPrefix(strs));

        strs = new String[]{"dog", "racecar", "car"};
        System.out.println(longestCommonPrefix(strs));
    }
}
